package controlador;

import classes.Agenda;
import dao.AgendaDao;
import erro.ConexaoException;
import erro.ConsultaException;
import erro.GeralException;
import java.util.ArrayList;

/**
 *
 * @author R
 */
public class AgendaControlador {

    private AgendaDao dao;

    public AgendaControlador() {

        this.dao = new AgendaDao();
    }

    /**
     * 
     * @param a  = Agenda
     * @throws ConexaoException
     * @throws ConsultaException
     * @throws GeralException 
     */
    public void inserirAgenda(Agenda a) throws ConexaoException, ConsultaException, GeralException {
        if (a.getData() == null || a.getHoraI() == null || a.getLocal().trim().equals("") || a.getAssunto().trim().equals("")) {
            throw new GeralException("Preencha todos os campos obrigatórios.");
        } else {
            this.dao.inserirAgenda(a);
        }
    }

    /**
     * 
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Agenda> listar() throws ConexaoException, ConsultaException {
        return (ArrayList<Agenda>) this.dao.listar();
    }

    /**
     * 
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Agenda> listarFinalizados() throws ConexaoException, ConsultaException {
        return (ArrayList<Agenda>) this.dao.listarFinalizados();
    }

    /**
     * 
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Agenda> listarLogado() throws ConexaoException, ConsultaException {
        return (ArrayList<Agenda>) this.dao.listarLogado();
    }

    /**
     * 
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public ArrayList<Agenda> listarAbertas() throws ConexaoException, ConsultaException {
        return (ArrayList<Agenda>) this.dao.listarAbertas();
    }

    /**
     * 
     * @param a = Agenda
     * @return
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public Agenda pesquisar(Agenda a) throws ConexaoException, ConsultaException {
        return (Agenda) this.dao.pesquisar(a);
    }

    /**
     * 
     * @param a = Agenda
     * @throws ConexaoException
     * @throws ConsultaException 
     */
    public void deletar(Agenda a) throws ConexaoException, ConsultaException {
        this.dao.deletar(a);
    }

    /**
     * 
     * @param a = Agenda
     * @throws ConexaoException
     * @throws ConsultaException
     * @throws GeralException 
     */
    public void alterar(Agenda a) throws ConexaoException, ConsultaException, GeralException {
        if (a.getData() == null || a.getHoraI() == null || a.getLocal().trim().equals("") || a.getAssunto().trim().equals("")) {
            throw new GeralException("Preencha todos os campos obrigatórios.");
        } else {
            this.dao.alterar(a);
        }
    }

    public void alterarAbertoAgenda(Agenda a) throws ConexaoException, ConsultaException {
        this.dao.alterarAbertoAgenda(a);
    }
}
